﻿<ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
    xmlns:Resources="clr-namespace:WpfRcp.Resources">

    <LinearGradientBrush x:Key="ProgressBarBackground" EndPoint="1,0" StartPoint="0,0">
        <GradientStop Color="#666666" Offset="0" />
        <GradientStop Color="#AAAAAA" Offset="0.5" />
        <GradientStop Color="#666666" Offset="1" />
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="ProgressBarBorderBrush" EndPoint="0,1" StartPoint="0,0">
        <GradientStop Color="#B2B2B2" Offset="0" />
        <GradientStop Color="#8C8C8C" Offset="1" />
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="ProgressBarGlassyHighlight" EndPoint="0,1" StartPoint="0,0">
        <GradientStop Color="#50FFFFFF" Offset="0.5385" />
        <GradientStop Color="#00FFFFFF" Offset="0.5385" />
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="ProgressBarTopHighlight" EndPoint="0,1" StartPoint="0,0">
        <GradientStop Color="#80FFFFFF" Offset="0.05" />
        <GradientStop Color="#00FFFFFF" Offset="0.25" />
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="ProgressBarIndicatorAnimatedFill" EndPoint="0,0" StartPoint="-200,0"
            MappingMode="Absolute">
        <GradientStop Color="#00000000" Offset="0" />
        <GradientStop Color="#FF000000" Offset="0.4" />
        <GradientStop Color="#FF000000" Offset="0.6" />
        <GradientStop Color="#00000000" Offset="1" />
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="ProgressBarIndicatorDarkEdgeLeft" EndPoint="1,0" StartPoint="0,0">
        <GradientStop Color="#0C000000" Offset="0" />
        <GradientStop Color="#20000000" Offset="0.3" />
        <GradientStop Color="#00000000" Offset="1" />
    </LinearGradientBrush>

    <LinearGradientBrush x:Key="ProgressBarIndicatorDarkEdgeRight" EndPoint="1,0" StartPoint="0,0">
        <GradientStop Color="#00000000" Offset="0" />
        <GradientStop Color="#20000000" Offset="0.7" />
        <GradientStop Color="#0C000000" Offset="1" />
    </LinearGradientBrush>

    <RadialGradientBrush x:Key="ProgressBarIndicatorLightingEffectLeft" RelativeTransform="1,0,0,1,0.5,0.5" RadiusX="1"
            RadiusY="1">
        <GradientStop Color="#60FFFFC4" Offset="0" />
        <GradientStop Color="#00FFFFC4" Offset="1" />
    </RadialGradientBrush>

    <LinearGradientBrush x:Key="ProgressBarIndicatorLightingEffect" EndPoint="0,0" StartPoint="0,1">
        <GradientStop Color="#60FFFFC4" Offset="0" />
        <GradientStop Color="#00FFFFC4" Offset="1" />
    </LinearGradientBrush>

    <RadialGradientBrush x:Key="ProgressBarIndicatorLightingEffectRight" RelativeTransform="1,0,0,1,-0.5,0.5"
            RadiusX="1" RadiusY="1">
        <GradientStop Color="#60FFFFC4" Offset="0" />
        <GradientStop Color="#00FFFFC4" Offset="1" />
    </RadialGradientBrush>

    <LinearGradientBrush x:Key="ProgressBarIndicatorGlassyHighlight" EndPoint="0,1" StartPoint="0,0">
        <GradientStop Color="#50FFFFFF" Offset="0.5385" />
        <GradientStop Color="#00FFFFFF" Offset="0.5385" />
    </LinearGradientBrush>

    <Style TargetType="{x:Type ProgressBar}">
        <Setter Property="Foreground" Value="#FFBA00" />
        <Setter Property="Background" Value="{StaticResource ProgressBarBackground}" />
        <Setter Property="BorderBrush" Value="{StaticResource ProgressBarBorderBrush}" />
        <Setter Property="BorderThickness" Value="1" />
        <Setter Property="Template">
            <Setter.Value>
                <ControlTemplate TargetType="{x:Type ProgressBar}">
                    <Grid SnapsToDevicePixels="true" x:Name="Background">
                        <Rectangle Fill="{TemplateBinding Background}" RadiusX="6" RadiusY="6" />
                        <Border Margin="1" Background="{StaticResource ProgressBarGlassyHighlight}" CornerRadius="6" />
                        <Border Margin="1" Background="{StaticResource ProgressBarTopHighlight}" BorderBrush="#80FFFFFF"
                                BorderThickness="1,0,1,1" CornerRadius="6" />
                        <Rectangle Margin="1" x:Name="PART_Track" RadiusX="6" RadiusY="6" />
                        <Decorator HorizontalAlignment="Left" Margin="1" x:Name="PART_Indicator">
                            <Grid x:Name="Foreground">
                                <Grid.ColumnDefinitions>
                                    <ColumnDefinition MaxWidth="15" />
                                    <ColumnDefinition Width="0.1*" />
                                    <ColumnDefinition MaxWidth="15" />
                                </Grid.ColumnDefinitions>
                                <Grid.RowDefinitions>
                                    <RowDefinition />
                                    <RowDefinition />
                                </Grid.RowDefinitions>
                                <Rectangle Fill="{TemplateBinding Foreground}" x:Name="Indicator" Grid.ColumnSpan="3"
                                        Grid.RowSpan="2" RadiusX="6" RadiusY="6" />
                                <Rectangle Fill="{TemplateBinding Foreground}" x:Name="Animation" Grid.ColumnSpan="3"
                                        Grid.RowSpan="2" RadiusX="6" RadiusY="6">
                                    <Rectangle.OpacityMask>
                                        <MultiBinding>
                                            <MultiBinding.Converter>
                                                <Resources:ProgressBarHighlightConverter />
                                            </MultiBinding.Converter>
                                            <Binding Source="{StaticResource ProgressBarIndicatorAnimatedFill}" />
                                            <Binding Path="ActualWidth" ElementName="Background" />
                                            <Binding Path="ActualHeight" ElementName="Background" />
                                        </MultiBinding>
                                    </Rectangle.OpacityMask>
                                </Rectangle>
                                <Rectangle Fill="{StaticResource ProgressBarIndicatorDarkEdgeLeft}" RadiusX="1"
                                        RadiusY="1" Margin="1,1,0,1" x:Name="LeftDark" Grid.RowSpan="2" />
                                <Rectangle Fill="{StaticResource ProgressBarIndicatorDarkEdgeRight}" RadiusX="1"
                                        RadiusY="1" Margin="0,1,1,1" x:Name="RightDark" Grid.Column="2" Grid.RowSpan="2" />
                                <Rectangle Fill="{StaticResource ProgressBarIndicatorLightingEffectLeft}"
                                        x:Name="LeftLight" Grid.Column="0" Grid.Row="2" />
                                <Rectangle Fill="{StaticResource ProgressBarIndicatorLightingEffect}"
                                        x:Name="CenterLight" Grid.Column="1" Grid.Row="2" />
                                <Rectangle Fill="{StaticResource ProgressBarIndicatorLightingEffectRight}"
                                        x:Name="RightLight" Grid.Column="2" Grid.Row="2" />
                                <Border x:Name="Highlight1"
                                        Background="{StaticResource ProgressBarIndicatorGlassyHighlight}"
                                        Grid.ColumnSpan="3" Grid.RowSpan="2" CornerRadius="6" />
                                <Border x:Name="Highlight2" Background="{StaticResource ProgressBarTopHighlight}"
                                        Grid.ColumnSpan="3" Grid.RowSpan="2" CornerRadius="6" />
                            </Grid>
                        </Decorator>
                        <Border BorderBrush="{TemplateBinding BorderBrush}"
                                BorderThickness="{TemplateBinding BorderThickness}" CornerRadius="6" />
                    </Grid>
                    <ControlTemplate.Triggers>
                        <Trigger Property="Orientation" Value="Vertical">
                            <Setter Property="LayoutTransform" TargetName="Background">
                                <Setter.Value>
                                    <RotateTransform Angle="-90" />
                                </Setter.Value>
                            </Setter>
                            <Setter Property="LayoutTransform" TargetName="PART_Track">
                                <Setter.Value>
                                    <RotateTransform Angle="90" />
                                </Setter.Value>
                            </Setter>
                            <Setter Property="LayoutTransform" TargetName="PART_Indicator">
                                <Setter.Value>
                                    <RotateTransform Angle="90" />
                                </Setter.Value>
                            </Setter>
                            <Setter Property="LayoutTransform" TargetName="Foreground">
                                <Setter.Value>
                                    <RotateTransform Angle="-90" />
                                </Setter.Value>
                            </Setter>
                        </Trigger>
                        <Trigger Property="IsIndeterminate" Value="true">
                            <Setter Property="Visibility" TargetName="LeftDark" Value="Collapsed" />
                            <Setter Property="Visibility" TargetName="RightDark" Value="Collapsed" />
                            <Setter Property="Visibility" TargetName="LeftLight" Value="Collapsed" />
                            <Setter Property="Visibility" TargetName="CenterLight" Value="Collapsed" />
                            <Setter Property="Visibility" TargetName="RightLight" Value="Collapsed" />
                            <Setter Property="Visibility" TargetName="Indicator" Value="Collapsed" />
                        </Trigger>
                        <Trigger Property="IsIndeterminate" Value="false">
                            <Setter Property="Fill" TargetName="Indicator" Value="#DF9A00" />
                        </Trigger>
                    </ControlTemplate.Triggers>
                </ControlTemplate>
            </Setter.Value>
        </Setter>
    </Style>
    
</ResourceDictionary>